// 商品路由表

// 加载模块
const express = require('express');
const goodsModel = require('../db/models/goodsModel');
// 可以在当前路由表中使用goodsModel来操作goods数据集合
const path = require('path');

// 创建一张路由表（空表）
const router = express.Router();

// 向路由表添加内容:

// multer插件
// multer插件用于接收FormData数据
// 1.安装插件：
// npm i multer
// 2.加载模块
const multer = require('multer');

/* // 上传单个文件（简单版）
// 3.创建upload接收器（用于接收文件的对象）
const upload = multer({dest: './www/uploads'});
// upload.single(input的name名称)方法，用于接收单个文件

// 上传文件接口
router.post('/upload',upload.single('upfile'),(req,res)=>{
    // multer插件接收文件后，给req对象添加一个file属性，包含上传文件的信息
    console.log( req.file );
    // req.file = {
    //     fieldname: 'upfile',
    //     originalname: '01.gif',
    //     encoding: '7bit',
    //     mimetype: 'image/gif',
    //     destination: './www/uploads',
    //     filename: 'b3185c93e92b3321284d14fc7c26767a',
    //     path: 'www\\uploads\\b3185c93e92b3321284d14fc7c26767a',
    //     size: 8233
    // }
      
    console.log( req.body.user );// 'xiaocuo'

    res.send('upload is ok');
}); */


/* // 上传单个文件（进阶版）
// 3.创建upload接收器（用于接收文件的对象）
const upload = multer({storage: multer.diskStorage({
    // 设置文件存储的位置
    destination: function (req,file,cb){
        // req 请求对象
        // file 文件相关信息
        // cb 用于设置上传文件存储位置的回调函数
        cb(null,'./www/uploads');
    },
    // 设置文件名称
    filename: function (req,file,cb){
        // req 请求对象
        // file 文件相关信息
        // console.log( file );
        // file = {
        //     fieldname: 'upfile',
        //     originalname: '02.jpg',
        //     encoding: '7bit',
        //     mimetype: 'image/jpeg'
        // }
        // console.log( path.extname(file.originalname) );// '.jpg'
          
        // cb 用于设置上传文件名称的回调函数 
        // cb(null,'hehe.jpg');
        // 上传的文件：1.文件名称唯一性；2.文件后缀和原来的一致。
        let fn = 'upload_'+Date.now()+'_'+parseInt(Math.random()*100000);
        let hz = path.extname(file.originalname);
        cb(null,fn+hz);
    },
})});
// upload.single(input的name名称)方法，用于接收单个文件

// 上传文件接口
router.post('/upload',upload.single('upfile'),(req,res)=>{
    // multer插件接收文件后，给req对象添加一个file属性，包含上传文件的信息
    console.log( req.file );
    // req.file = {
    //     fieldname: 'upfile',
    //     originalname: '01.gif',
    //     encoding: '7bit',
    //     mimetype: 'image/gif',
    //     destination: './www/uploads',
    //     filename: 'upload_1684140407190_87860.gif',
    //     path: 'www\\uploads\\upload_1684140407190_87860.gif',
    //     size: 8233
    // }
      
    console.log( req.body.user );// 'xiaocuo'

    res.send('upload is ok');
}); */


// 上传单个文件（高级版）
// 3.创建upload接收器（用于接收文件的对象）
const upload = multer({
    // 文件大小
    limits: {
        // 限制上传的图片最大为400kb
        fileSize: 1024*400
    },
    // 文件过滤
    fileFilter: function (req,file,cb){
        // req 请求对象
        // file 文件相关信息
        // console.log( file );
        // file = {
        //     fieldname: 'upfile',
        //     originalname: '02.jpg',
        //     encoding: '7bit',
        //     mimetype: 'image/jpeg'
        // }
        // cb 是否接收文件的回调函数

        // 限制只能上传图片
        let reg = /\.(png|jpe?g|gif|svg|webp)$/;
        if (reg.test(file.originalname)) {
            // 接收文件
            cb(null,true);
        } else {
            // 绝收文件
            cb(null,false);
        }
    },
    // 设置文件存储位置和名称
    storage: multer.diskStorage({
        // 设置文件存储的位置
        destination: function (req,file,cb){
            // req 请求对象
            // file 文件相关信息
            // cb 用于设置上传文件存储位置的回调函数
            cb(null,'./www/uploads');
        },
        // 设置文件名称
        filename: function (req,file,cb){
            // req 请求对象
            // file 文件相关信息
            // console.log( file );
            // file = {
            //     fieldname: 'upfile',
            //     originalname: '02.jpg',
            //     encoding: '7bit',
            //     mimetype: 'image/jpeg'
            // }
            // console.log( path.extname(file.originalname) );// '.jpg'
            
            // cb 用于设置上传文件名称的回调函数 
            // cb(null,'hehe.jpg');
            // 上传的文件：1.文件名称唯一性；2.文件后缀和原来的一致。
            let fn = 'upload_'+Date.now()+'_'+parseInt(Math.random()*100000);
            let hz = path.extname(file.originalname);
            cb(null,fn+hz);
        },
    })
});
// upload.single(input的name名称)方法，用于接收单个文件
let uploadFun = upload.single('upfile');

// 上传文件接口
router.post('/upload',(req,res)=>{
    // 接收文件之后执行uploadFun函数
    uploadFun(req,res,(err)=>{// 接收文件之后执行的回调函数
        if (err) {
            // 上传的文件大于400kb
            return res.send({"code":0,"msg":"上传的图片最大为400kb"});
        }
        if (!req.file) {
            // 上传文件的类型不符合要求
            return res.send({"code":-1,"msg":"亲，只能上传图片！"});
        }
        let imgurl = 'http://localhost:9999/static/uploads/'+req.file.filename;
        res.send({"code":1,"msg":"上传成功！",imgurl});
    });

    /* // multer插件接收文件后，给req对象添加一个file属性，包含上传文件的信息
    console.log( req.file );
    // req.file = {
    //     fieldname: 'upfile',
    //     originalname: '01.gif',
    //     encoding: '7bit',
    //     mimetype: 'image/gif',
    //     destination: './www/uploads',
    //     filename: 'upload_1684140407190_87860.gif',
    //     path: 'www\\uploads\\upload_1684140407190_87860.gif',
    //     size: 8233
    // }
      
    console.log( req.body.user );// 'xiaocuo'

    res.send('upload is ok'); */
});

// 测试cookie接口
router.get('/cookie',(req,res)=>{
    // 获取get请求参数
    let {a,b} = req.query;

    // 获取cookie数据
    // 使用了cookie-parser插件之后，在req请求对象中有一个cookies属性，包含客户端携带过来的cookie数据
    console.log( req.cookies );// { user1: 'xiaoming', user2: 'xiaowang' }

    // 设置cookie数据
    // 使用了cookie-parser插件之后，在res响应对象中有一个cookie方法，用于设置客户端的cookie数据
    res.cookie('user3','xiaohong',{
        path: '/', // 路径
        domain: 'localhost', // 域名
        maxAge: 1000*60*30 // 有效期，毫秒
    });

    res.send({"key1":a,"key2":b});
})

// 添加商品接口
router.get('/add',(req,res)=>{
    res.send('add is ok');
})

// 删除商品接口
router.get('/del',(req,res)=>{
    res.send('del is ok');
})

// 修改商品接口
router.get('/update',(req,res)=>{
    res.send('update is ok');
})

// 查询商品接口
router.get('/getList',(req,res)=>{
    res.send('getList is ok');
})

// 模块输出路由表
module.exports = router;
